package com.pb.wkflow.core.camunda.bpmn.instance;

import org.camunda.bpm.model.bpmn.instance.BpmnModelElementInstance;

import java.util.Collection;

/**
 * @author 苗益辉
 * @date 2022/5/9 9:38
 */
public interface UserParticipant extends BpmnModelElementInstance {

    /** 参与者列表 */
    String CONFIG_TYPE_1 = "1";

    /** 流程发起者 */
    String CONFIG_TYPE_2 = "2";

    /** 流程执行者 */
    String CONFIG_TYPE_3 = "3";

    /** 相关数据 */
    String CONFIG_TYPE_4 = "4";

    /** 规则逻辑 外部服务或内部bean */
    String CONFIG_TYPE_5 = "5";

    String SERVICE_TYPE_LOCAL = "local";

    String SERVICE_TYPE_ONLINE = "online";

    /**
     * 获取参与者类型type
     * @return String
     */
    String getParticipantType();

    /**
     * 设置参与者类型
     * @param participantType 参与者类型
     */
    void setParticipantType(String participantType);

    /**
     * 获取参与者
     * @return Collection
     */
    Collection<Participants> getParticipants();

    /**
     * 获取历史节点
     * @return String
     */
    String getActivity();

    /**
     * 设置历史节点
     * @param activity activity
     */
    void setActivity(String activity);

    /**
     * 获取相关数据
     * @return String
     */
    String getAboutData();

    /**
     * 设置相关数据
     * @param aboutData aboutData
     */
    void setAboutData(String aboutData);

    /**
     * 获取外部服务地址
     * @return String
     */
    String getServiceUrl();

    /**
     * 设置外部服务地址
     * @param serviceUrl serviceUrl
     */
    void setServiceUrl(String serviceUrl);

    /**
     * 获取内部服务Bean
     * @return String
     */
    String getServiceBean();

    /**
     * 设置内部服务bean
     * @param serviceBean serviceBean
     */
    void setServiceBean(String serviceBean);

    /**
     * 获取服务类型
     * @return String
     */
    String getServiceType();

    /**
     * 设置服务类型
     * @param serviceType serviceType
     */
    void setServiceType(String serviceType);

    /**
     * 获取规则逻辑
     * @return Collection
     */
    Collection<RuleLogicParam> getRuleLoginParam();
}
